/*
 * Copyright 2013-2025 chronicle.software; SPDX-License-Identifier: Apache-2.0
 */
package net.openhft.hashing;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;

import java.util.ArrayList;
import java.util.Collection;

import static org.junit.runners.Parameterized.Parameter;
import static org.junit.runners.Parameterized.Parameters;

@RunWith(Parameterized.class)
public class City64_1_1_Test {

    @Parameters
    public static Collection<Object[]> data() {
        ArrayList<Object[]> data = new ArrayList<Object[]>();
        for (int len = 0; len < 1025; len++) {
        	data.add(new Object[] {len});
        }
        return data;
    }

    @Parameter
    public int len;

    @Test
    public void testCityWithoutSeeds() {
        test(LongHashFunction.city_1_1(), HASHES_OF_LOOPING_BYTES_WITHOUT_SEEDS);
    }

    @Test
    public void testCityWithOneSeed() {
        test(LongHashFunction.city_1_1(0L, 0L), HASHES_OF_LOOPING_BYTES_WITH_SEEDS_0_0);
    }

    private void test(LongHashFunction city, long[] hashesOfLoopingBytes) {
        byte[] data = new byte[len];
        for (int j = 0; j < data.length; j++) {
            data[j] = (byte) j;
        }
        LongHashFunctionTest.test(city, data, hashesOfLoopingBytes[len]);
    }

// The following numbers is the result of compiling & running this program
// with city-1.1.1, reference impl:
//
//    #include <stdlib.h>
//    #include <stdio.h>
//    #include <city.h>
//
//     main() {
//        char* src = (char*) malloc(1024);
//        for (int i = 0; i < 1024; i++) {
//            src[i] = (char) i;
//        }
//        printf("without seeds\n");
//        for (int i = 0; i <= 1024; i++) {
//            printf("%lldL,\n", (long long)CityHash64(src, i));
//        }
//        printf("with seeds 0, 0\n");
//        for (int i = 0; i <= 1024; i++) {
//            printf("%lldL,\n", (long long)CityHash64WithSeeds(src, i, 0, 0));
//        }
//    }

    private static final long[] HASHES_OF_LOOPING_BYTES_WITHOUT_SEEDS = {
            -7286425919675154353L,
            -4728684028706075820L,
            -4422457430495752843L,
            -7736835464683084646L,
            -9025216361070533312L,
            -5422428610433466039L,
            -7854914535251369165L,
            -6710152398449367391L,
            -5955425696247891048L,
            -9135800243314829233L,
            -7246206370539175958L,
            -927412511068636451L,
            -6929387038567547523L,
            -4483949857698136942L,
            5465584872023869041L,
            -8779115096593678947L,
            1080060857502750420L,
            -4920561954712641764L,
            8788987475711186918L,
            -7811586469569372367L,
            -8225851168889855767L,
            -1446326939218740700L,
            2947276334089957408L,
            460179928224693724L,
            4556289589497654983L,
            -5431404645194118082L,
            1374684061788708333L,
            4791352535680686582L,
            -6530211739313377370L,
            -7635818062080712801L,
            5236473510478810791L,
            -299119187023926975L,
            1917831512995979081L,
            5107424530006203066L,
            -5351750064093194974L,
            2946934858665984768L,
            5031111514403073L,
            3910662880520648515L,
            7104787927248062489L,
            -6487722535395806461L,
            3960877915061173532L,
            -4579031603096916569L,
            -3869369943781850205L,
            5545493761745899838L,
            -7059462733818922495L,
            6807020698875987225L,
            -404529411533207610L,
            -5190881841756839606L,
            -4104575122654935515L,
            6967381383547484689L,
            8297988497614279881L,
            8680592459788761385L,
            -3059691078085565528L,
            -6315132929596828281L,
            -4334276152181959987L,
            -535710436645363679L,
            -7591547014909512897L,
            -6322657031286798644L,
            7490021577199580942L,
            -8877856250499437898L,
            -1633403071681209495L,
            -5579376360386761981L,
            3395840816824425443L,
            -5822993263498516753L,
            -1613775140304724827L,
            -6027895920215728850L,
            -5805352503949881486L,
            1532677441468290047L,
            -8648407032749049966L,
            -2939164377159033571L,
            -4702680364495832252L,
            105631500981943270L,
            -7893756812661322999L,
            5760642662739372587L,
            -6215695861042047454L,
            1238201813735746316L,
            -4809334409104512081L,
            2347957779168721077L,
            9062861991168352058L,
            6741188021946160720L,
            5759783405795756054L,
            -7404571833801891275L,
            5236586458250640726L,
            -6440402695065204540L,
            7127501107294950542L,
            -8740931757300170334L,
            5534676620576843972L,
            -4574941845361945294L,
            -9883751627416689L,
            7607362424232991178L,
            -3354796234778573261L,
            -3645150900513625504L,
            -6488903739323758581L,
            6012082827380234497L,
            -5054558154612698247L,
            3912192630192643044L,
            -2020201547348302146L,
            -5668877223161468438L,
            8268442247828559279L,
            -5794570113714942465L,
            -6593295974839137082L,
            -3017674363433867291L,
            9132819821668885553L,
            4741264366937614131L,
            830814054897026754L,
            -2034640718262093716L,
            8943931193848644945L,
            -8152524248109219563L,
            -6859491045979443967L,
            5989638100417143996L,
            -3267834036936991810L,
            -7636942225548479235L,
            -4414857242429251885L,
            -2291796691719558349L,
            -443263958430047225L,
            7365713933907296010L,
            -3873163659277696512L,
            3210434025964027265L,
            4488179162024237572L,
            -4930451962295763338L,
            7001793786790109268L,
            2260583935679101347L,
            6302158474829298170L,
            -2419988900997440242L,
            -8014717202309677597L,
            -8235679274201152527L,
            -5412354269470908685L,
            -1164721218407162475L,
            1202834260335129493L,
            5097669210588415856L,
            5123804704029457567L,
            -6598196598389898964L,
            -6869069910041547416L,
            -928355525786123860L,
            -966564912375064896L,
            4636972776252349972L,
            -2242946385954433108L,
            -2308096272056919881L,
            -6298993315544438985L,
            -3151578775439575412L,
            -2981346332242477399L,
            6868228731909122983L,
            -6986102546523057772L,
            3966488015587306733L,
            -7964296030132213922L,
            -5968054086424703428L,
            -5682984903553203201L,
            1262045945453884357L,
            -8506021221334832979L,
            7003579340962719964L,
            7942843347128085593L,
            3274150487722006282L,
            4427242625667076769L,
            -5558614835558052533L,
            8189732125765662222L,
            -2778584257768737506L,
            -6226635033105800171L,
            7651720467242209474L,
            9181931113760444130L,
            2531900585268751432L,
            5021256001343290469L,
            -5934384589108485717L,
            -1862924803786167203L,
            1489099108801110675L,
            7297283605813218793L,
            -8415280978394092215L,
            -4126156388588540951L,
            -3706737886726786804L,
            -2710208030451980715L,
            -8047451206915723423L,
            -1218572947384892459L,
            8297865478600584233L,
            8165902466320925460L,
            5554419482037121102L,
            4417403317404803986L,
            -6616982450866646170L,
            -7959099281697237016L,
            -3114405717510473052L,
            -1857505830677138154L,
            -1018685550688766348L,
            5207428187340024429L,
            5300227297807876147L,
            -2390037343420204123L,
            -448127685853213712L,
            -6225388303620718856L,
            2389000856964185630L,
            -2067625213238325040L,
            -241429434055336511L,
            -8970491894816477388L,
            -6897203400744644612L,
            -4604959413085934526L,
            2400135546673933001L,
            -3045961230403678092L,
            -1917277105023051478L,
            8197811581050490133L,
            3786786968548875789L,
            4625663088087573665L,
            -2168704627193825976L,
            7192692656796588680L,
            2481695319570886548L,
            -805495018187668520L,
            5671304642231997436L,
            -4228301512035074347L,
            -7701083686405511339L,
            -1427738904980858657L,
            8356642386295377804L,
            -353719534132831289L,
            706229336943583572L,
            -9168064130899442751L,
            8265029971140615336L,
            -2707147319767299550L,
            7353033265757382049L,
            8397636325397273152L,
            -6517736165712294631L,
            6949546038097145245L,
            1648771344345529694L,
            6558709565158356186L,
            1808377088858220390L,
            2838565433860722913L,
            1308279908036033190L,
            8824692270735996388L,
            4066525655875567756L,
            5152272828145679687L,
            -3469524600427842330L,
            188800643931297464L,
            7173304178017026190L,
            -5347641926849324594L,
            -8829553366459830305L,
            8778291414581187896L,
            593871733331593377L,
            2192404833132388154L,
            -3564506003420601160L,
            2859700462125450624L,
            -7123068915788342214L,
            -9199725509076335326L,
            4749263509373213952L,
            -3638383731952186227L,
            -6283092296877861618L,
            -2825268767310280965L,
            7643742019486170884L,
            7034401305567905177L,
            -31827767771004462L,
            -3569709783922447606L,
            1011781009512126791L,
            -5982832679535324039L,
            2402494289382923228L,
            5378572830995800063L,
            -4978012351095471455L,
            -3034756850229693434L,
            -6743229956355567041L,
            -1028117510121450274L,
            -1267497062066519287L,
            -5053670629173080711L,
            -460732196015338926L,
            -6371275689446166637L,
            6288834997689259448L,
            894299094737143437L,
            -6014774806034970825L,
            -3271595897687689742L,
            -7449732170732070004L,
            506523418677247916L,
            -687365991489907728L,
            8228603339396783688L,
            7211450665110285461L,
            -3009830902792319569L,
            -5417937957852652579L,
            6051039017008413932L,
            -5925978207158526805L,
            -2615140071349844608L,
            -8654933370440320601L,
            -6342253313262031587L,
            4461643906497668150L,
            -819522441838551231L,
            -1359425915347178296L,
            1075135447892840058L,
            7643058122247322338L,
            -4070529264423045602L,
            6335201156325848872L,
            4776486447069195757L,
            -4254562051076226566L,
            5766929006988848669L,
            -884034037937901831L,
            1766456663364676290L,
            -4311719146183820266L,
            7666581505151857266L,
            671421170492658629L,
            -1964099404051832475L,
            1732360456059290553L,
            -297869400412879955L,
            -9030316701971057409L,
            -9075660047343779046L,
            3583673289738670454L,
            -9182941546024088613L,
            1136735461790749536L,
            8366765554392407195L,
            -5540891596657836355L,
            -7821100180551973617L,
            -1977279128251662041L,
            -2356171669808568513L,
            -2015573691705664756L,
            4488487306883615842L,
            4851354791727756109L,
            -3251092166327359481L,
            -601646434326145067L,
            776101951221215280L,
            -6668237828878985553L,
            7844860178588967334L,
            64341060285013340L,
            7036395122924142569L,
            -7724784063616999535L,
            2914805329168628994L,
            7621906733182421570L,
            2118815299569935033L,
            -8611860394051996699L,
            -2517166550051884828L,
            -6993083065762083347L,
            2404060287424189503L,
            -8081836069740145167L,
            -6067471269374793929L,
            3439258482592575547L,
            -6466818119401182672L,
            1855293097271252452L,
            -6761456087842467624L,
            6656763620585181420L,
            -4645642491601388295L,
            -8829570488301084514L,
            -6279091021271619556L,
            -1913500423661250093L,
            -8293385927741834686L,
            -808977409753631920L,
            -2730813255791690623L,
            760899304567634337L,
            3447062143237006129L,
            -8842923486609316688L,
            -1505518261280441404L,
            -8952792346352363916L,
            -3654437654855386526L,
            -8894745855055459645L,
            253433424322101103L,
            9087982386284623409L,
            5229689677888986164L,
            7591231218923024443L,
            -6553455979736582189L,
            -6817900072998950224L,
            1012237197570815938L,
            -1041501749233381438L,
            6870652863042402620L,
            7290269702536111943L,
            -2011669460814939543L,
            -4739132450972235476L,
            6066906978691731285L,
            1546459970278232517L,
            7264475946711979454L,
            -6827279988316999463L,
            6948666464698968123L,
            5066099854277588391L,
            3617923505625432817L,
            1470423865947425164L,
            -2407848614631507329L,
            -2721518777381923816L,
            -8523365410901703222L,
            4677154254765168702L,
            -3770388132335360433L,
            2921549272211529780L,
            -675990637368864946L,
            851813270104783927L,
            1645312556841013286L,
            7927523946826503527L,
            2802530705554935060L,
            4420122776914984561L,
            5168061431322460870L,
            -3637982376709290280L,
            -4792218222117838791L,
            -1594804027447799011L,
            7019536217023665362L,
            5718841507582027847L,
            1100038721024625254L,
            4344644567377313784L,
            8200393826966791959L,
            8894425291364977602L,
            2359988989741956746L,
            33375660597707981L,
            3669152498936403685L,
            -2718673953441374568L,
            92663594252170279L,
            -4255839685607808051L,
            -712976418504655651L,
            4188336312392147780L,
            2678387573955385138L,
            5321904963044271153L,
            -6249628719291181094L,
            -8876650223107687355L,
            8352423161613591273L,
            -2028799093461825949L,
            9011909818387084247L,
            -5940434430375305675L,
            3490020360211624506L,
            8424335559697179192L,
            3222699924556192045L,
            7964158943145881894L,
            330499497334085755L,
            8764983981643618893L,
            -1653480401860466428L,
            -1353880172593700164L,
            -6469256613830029852L,
            -4893038789738483635L,
            8164190368596497481L,
            5278453078131476326L,
            910888251237419688L,
            3697943209022914547L,
            5449624560010431329L,
            -3584621013753301872L,
            654189080535454533L,
            -7562028051554401340L,
            8924718183483314324L,
            -1485127518392421693L,
            3918745837987619627L,
            -4539406462388765487L,
            5483323815514497307L,
            6306137176139938292L,
            -807721373860280201L,
            -9165053290624784358L,
            2697602178198341027L,
            4348395670472375164L,
            -400178961926803853L,
            -7689451542459549880L,
            4509866787834747782L,
            9185710136408363969L,
            7923865403849230565L,
            -5869104529577485293L,
            4854955700697037319L,
            9191216701481807090L,
            -679449825281621614L,
            -3189846996545570031L,
            -8083169535868277187L,
            -9174257325298378624L,
            -4552176765196275L,
            1628631992923682209L,
            8319654855481955340L,
            8861739932800214810L,
            -993117140134665724L,
            -7815627532394322917L,
            -5524260825536443502L,
            6983369624720592264L,
            2975165537865741602L,
            1451865941470664872L,
            8661262499023857011L,
            9204748273209932460L,
            -5006258975566865529L,
            -1964973191525498109L,
            -6345850612890808987L,
            6330350968582806446L,
            -4566626859227178484L,
            4080473761572400112L,
            -6346529945189783184L,
            7055723585952818695L,
            7811169230131832954L,
            -7306057383456388215L,
            5652715072883610701L,
            -2250631360270905098L,
            8948341566778589071L,
            -7814352745627737399L,
            -2083093040021743435L,
            -4144374577642832518L,
            4554659244267885692L,
            -4805527992091411974L,
            3879386590110957199L,
            -7095733810311131713L,
            4218157720399299286L,
            -3959329580238802474L,
            1731201417108224317L,
            -8732695545326287246L,
            -8127721874141088173L,
            2847953048942004818L,
            -2848770956679986940L,
            1154351656441528122L,
            4106410957236720378L,
            477496151948916105L,
            8872899165245904476L,
            3834365941712504069L,
            8233875208097499501L,
            6544005900573385217L,
            371511961864400977L,
            5302630743605424838L,
            7619059416641067912L,
            938163523491488924L,
            -2193498991179441780L,
            -4381948476662408917L,
            2437161357208041044L,
            -1853214813114072629L,
            4032256607594450812L,
            -4569645391300269034L,
            996805768016039863L,
            -5352653220786799159L,
            -4072867815316954984L,
            5829678081429819442L,
            5854970045203806958L,
            7196705546676684298L,
            8855821442059151758L,
            1691257326941530873L,
            516443419472701223L,
            -189326359229885042L,
            -7069256705822756785L,
            8484184957260042276L,
            4751495376086537417L,
            -3538622506527375158L,
            -1130604628135516641L,
            -662884267626379918L,
            -1626547571415880505L,
            4362310446718468471L,
            -4692137164995780722L,
            -1878686192989058772L,
            -1262801893323802033L,
            316850896103923056L,
            -8337266500312820398L,
            -7607930981261565972L,
            -7606942324380249703L,
            -1863279537410737853L,
            515589381621691011L,
            1963273998306328480L,
            3626876516104382454L,
            -4734613701579936168L,
            1268078677159514015L,
            -7562820495728610458L,
            -5881301520585529952L,
            7263589689395116216L,
            3332748335049164596L,
            -928492619425385303L,
            -8439668591687876707L,
            6057690584855876482L,
            7709510645357107021L,
            688216636303161488L,
            191126336719796113L,
            4222857931985709754L,
            5163370007345445271L,
            -6942747002185630386L,
            -2732326623400822979L,
            41325922645173190L,
            4083911336538913161L,
            3094117323938386883L,
            3557206941692843782L,
            -2802805090114871259L,
            -396752131642527880L,
            -3107705530439472535L,
            8070257791496704758L,
            5555978803158201323L,
            4409520550497292548L,
            6336286888800178635L,
            3317356027694838288L,
            2401575734406277533L,
            -7762952901621766636L,
            -8495556902666486415L,
            -6098553262029734092L,
            364791930541331805L,
            -3034434066885855765L,
            7941447497229394663L,
            -6311456469393535820L,
            -3224469377911062967L,
            8110978943348454528L,
            7644406205313833523L,
            8931656291415416874L,
            4830016430262424325L,
            -8438474386071045565L,
            6477831547342095051L,
            3795147179128460013L,
            2753065962007277619L,
            6069828580914843210L,
            -5070382024314025872L,
            1576707579300544287L,
            5453704031214058740L,
            -1035262976071773160L,
            3387395655425490542L,
            -4848984716268304731L,
            8616838443866781524L,
            -3948140786885003158L,
            3962330984502924344L,
            -3394110440125760919L,
            8437322113039475260L,
            -4462275713722410457L,
            -9105148434050568503L,
            -5788212949545869877L,
            4557608001681875598L,
            -621234956095881342L,
            1797543657423762991L,
            6130226975770239840L,
            -6937918406956986622L,
            4193803048882394276L,
            4324662453655033332L,
            3904929732026970589L,
            -5512830190293331704L,
            -5238129213566557209L,
            540373761178912749L,
            3337453168137959715L,
            8356242320057396388L,
            -4507786512266822044L,
            -698048955859231008L,
            1181416669291835619L,
            3643161574413908044L,
            -4297980572116458092L,
            -2910009689167799889L,
            -9219400384203405648L,
            2837257119074162583L,
            -8143475796343843303L,
            -6701262784428931798L,
            -3566846192190811525L,
            -5826064075185101904L,
            7314616728107169430L,
            -7237382661205518959L,
            6614127174385956622L,
            4579105225630387051L,
            -4031772022249101869L,
            -3620132425485383754L,
            -6583523957977840094L,
            6091510613049819644L,
            -6657436664451253776L,
            8818554346883882723L,
            1172158546676437076L,
            2582843905454312864L,
            -875396097026320083L,
            -8848203911887421254L,
            6216447546397552656L,
            5663680539561409764L,
            209883782871623112L,
            6956397065493936061L,
            -5822486364606447659L,
            -2376186988282686016L,
            -6524574392506270574L,
            -5270703630108479361L,
            5121019866792000912L,
            945935884404515280L,
            -3784584736823369966L,
            -2986471018582996853L,
            -3856234881587215840L,
            6305579424806652269L,
            -4601892864817094249L,
            -4715544044948588160L,
            -1178634098444085344L,
            -4565928887270776879L,
            3733099898005319061L,
            6069592779991791222L,
            9107963518416746035L,
            6039316923758014718L,
            8297782059544644167L,
            -2184105415491254451L,
            2001634139595818848L,
            9198267247175603385L,
            -971507504085650973L,
            1529684592715776773L,
            -6499571738329764748L,
            2692794621907637848L,
            3620078955080706311L,
            -3810905539411016286L,
            -4315538097904969971L,
            238288165777703356L,
            3801607999515704624L,
            -8796282819004971627L,
            -7143692292464130110L,
            -2163491158557034519L,
            -9011885533150911632L,
            9155112387717094928L,
            9088915215752483036L,
            -1237520018892636128L,
            -6753599194173607835L,
            336577035174699985L,
            4747700477808735060L,
            931844140272524176L,
            -4257344590201194145L,
            -670422981995636407L,
            2500401999619637609L,
            7406487034015272912L,
            -384292968442149342L,
            -7987787036136248263L,
            -2653231840350927715L,
            4488358012056331513L,
            4132004061554806745L,
            2000006126034333275L,
            2367660688967266790L,
            -4085353431072751340L,
            -6333747719369049272L,
            -4139886406965236122L,
            -5592180402897144267L,
            5629551944241090329L,
            2272991263231641145L,
            -5168344584178448710L,
            5982172003825524793L,
            -4097896509839310227L,
            -2173000713225115918L,
            7108547918299652551L,
            -8878799355822473463L,
            -6248630805665498946L,
            5163839098786800196L,
            5795734275921137263L,
            -7245153276785179186L,
            -7094809303783005595L,
            -1803470859826091831L,
            4874431305017870420L,
            -8839194352522271777L,
            4701999825563368375L,
            -3679426707168942163L,
            4734328664805795607L,
            -768556148270379847L,
            3947269125893368179L,
            4714950126806030589L,
            -5247268458767477724L,
            -1879729542263864540L,
            1641255074942093290L,
            -9116204329902429525L,
            -364742432814767105L,
            -69357515456246742L,
            8333855547662608034L,
            1864002674034900754L,
            6403905632971416781L,
            -7065616950334616275L,
            -8174670288470068397L,
            -1788643243994894927L,
            2040528535819048731L,
            -7614591261684631428L,
            -8476219755505693753L,
            3296595282811904830L,
            -4038686171536252708L,
            -173444937930635352L,
            4379378816273396403L,
            -1083617946856135532L,
            2829396743633429008L,
            7647167960435994992L,
            -6693126224881188257L,
            3108807460115157477L,
            8562491110202112769L,
            -7424963641864880746L,
            2081921398431501385L,
            5209400744054399273L,
            5112090417850934870L,
            1524655582665697947L,
            -5843275962356379462L,
            -6334239724025378211L,
            -7268154201988435641L,
            1659668141032724392L,
            7389323132785440806L,
            5590854007476007348L,
            5302894709895800109L,
            8939357616797202357L,
            8822514621675961012L,
            -5171376528302818295L,
            1884135603723970677L,
            1618024292298833293L,
            -1237011265202015266L,
            -8040883111734337726L,
            -5506883502078400727L,
            -5535461054765222007L,
            6987425158845534706L,
            -5917819605734669552L,
            -128823547864917643L,
            2306699256825946343L,
            6578043582810501418L,
            1333071240688068841L,
            -844978627973023134L,
            1165513423049959936L,
            -3821092351522083096L,
            4178119893083594287L,
            -7966305568215876834L,
            -3090958372925773111L,
            6379864721688110803L,
            8454365886776707192L,
            7642874047594127629L,
            -657318587403536924L,
            3801960633076006868L,
            1417228866369858393L,
            -6177293427545629057L,
            -4532758952191612784L,
            7264967871106174537L,
            -4377935371893251778L,
            -5733943093645858937L,
            -6680841553969427023L,
            -7726067291839077718L,
            8383662776008964734L,
            -1112744575338004890L,
            6374190320986843773L,
            -8999217966784745583L,
            -7597176706996915696L,
            -1016011267603323245L,
            -8855672237269976658L,
            1866081428501204101L,
            -5633137211449093941L,
            -3633923734370033552L,
            6356569017217682507L,
            5058160257775482340L,
            -7437707824467063063L,
            7650351067322618291L,
            -7870694419219039600L,
            1007692631473636679L,
            -6154343863836713521L,
            2504745592130278975L,
            88486550721415362L,
            -7438916213215366445L,
            2983976134777543021L,
            -4146088135092960461L,
            6999580209156770608L,
            -7009740189170395954L,
            4126839178241879770L,
            5225682274323639211L,
            4660353570181491047L,
            -3242111597353447920L,
            1803242034579090657L,
            8094113187590542457L,
            7111382607287164209L,
            3662908704051040727L,
            -3379205925121269346L,
            6747462450220404315L,
            65992546736538642L,
            8188714708026451259L,
            7059032778575684879L,
            -4375005614825264977L,
            -6109413170920934528L,
            4325812979374770173L,
            6190341203443080272L,
            3806377003483660789L,
            7584471990548161252L,
            -3767546025951476771L,
            5011498119849592471L,
            4585280751135869910L,
            -2774285440269761924L,
            -2219523968621249741L,
            -6788014939853324942L,
            -6760697001786001699L,
            -1907834706280913583L,
            2768880461784823049L,
            -629361951557696226L,
            -5050911681363224361L,
            -9166005476966639742L,
            31804289095347444L,
            639074948574684643L,
            6010055855691161228L,
            -6702617244872776165L,
            4147599647636813218L,
            7651401543024655900L,
            4739867532288311604L,
            -7311026522201000188L,
            -2481600927193112363L,
            -4295248724569156530L,
            5040986942772410406L,
            8763074685442978007L,
            -7780650549244157320L,
            4727619369834180192L,
            8711570616947608575L,
            2722322146515041536L,
            5060226879657446005L,
            -6544404061220128813L,
            6434919141259253970L,
            -5427874400580062812L,
            -7156085410253767250L,
            -6601841961191942213L,
            -9147266855024119868L,
            -354433397501853706L,
            -6814497327235846905L,
            -8982035476653972472L,
            8930700532836854232L,
            -1726278544235169634L,
            1951478969618711815L,
            851982242210611420L,
            -6990203687021297279L,
            1368571238713408667L,
            2986039481571029352L,
            -626535432523998987L,
            4415114859836957989L,
            -8678134461890671357L,
            -6061358215352047476L,
            7915140762335918295L,
            -8378664661437708973L,
            -3058127489434967617L,
            6225893737093916241L,
            -1787758126471351031L,
            -393755980982643891L,
            -5268722683029966701L,
            4156689635576901740L,
            7365991146882099857L,
            8946946338475364603L,
            7319960897807520998L,
            -2393576873586390100L,
            8152201155239646390L,
            115383870797338026L,
            -7773145637941940242L,
            -318186749599182520L,
            3089445632531235737L,
            7372359700832992279L,
            -684419690766751897L,
            8663412456358708908L,
            -8423162022518559117L,
            -8645640258213218521L,
            3755512748576611566L,
            -3913197578066841395L,
            5316673743969283163L,
            6831695766395531003L,
            -8386643932900364475L,
            2245144203632789924L,
            5811854679522258384L,
            -3767061474776765896L,
            5961692927981326209L,
            -8247190832034282434L,
            -2778260837579024711L,
            -5629023501990762250L,
            8537394932332054145L,
            -6062925171595331986L,
            6840408648564451314L,
            6831505181423122970L,
            6050924032963061444L,
            97002770831342714L,
            -5440958264654316884L,
            -8531281358297662856L,
            -5585494473146494361L,
            -8316232109598521210L,
            -5015449123380194340L,
            546734480177265602L,
            4311680116951854912L,
            -5000334068336613611L,
            5095429433761178592L,
            -8984703830265496675L,
            -1796164578353805109L,
            -7862084290604723254L,
            -3341202509537190675L,
            -2120175014098274861L,
            6962378115816372563L,
            8337372275175376334L,
            2619274369511557562L,
            -6859437991409806193L,
            -6934562751052811686L,
            -361162941396148816L,
            3477913128345375098L,
            6500092632270742214L,
            -7787173285733693207L,
            1702735166445523176L,
            1447314647588646838L,
            -6166213076072914876L,
            8250474851845160242L,
            3877968303074149070L,
            72258823402464273L,
            -7794958806496084829L,
            582313431235093783L,
            5654370140388242557L,
            2361322084587394780L,
            7098843402525243411L,
            3090863845420947690L,
            9095251832683567577L,
            7351973108085879975L,
            -5523854289062931886L,
            1385990973911762672L,
            -1056696196230341112L,
            -4777822501121417674L,
            7453925677222043959L,
            4245544569709356516L,
            4912957528661637311L,
            -7303723525646889588L,
            8383839844005204972L,
            2636108895426426864L,
            7446083165659408850L,
            -1230331481495042331L,
            2165552178018697300L,
            8589713469255323753L,
            -104035337559208181L,
            9109517341871300972L,
            -5557606019056305482L,
            -2082770932342226712L,
            -7664170423633849264L,
            -6739763730657282594L,
            4217727556012572028L,
            -4230549046719159326L,
            -7870215613010795436L,
            -1573598371112622115L,
            8374003956860023067L,
            -4162778827118794697L,
            -4999879893029494430L,
            -5470698342693924491L,
            -524838860730151022L,
            2056390379798965398L,
            -7635140489953799830L,
            -4895934908017276310L,
            -8494320702432460395L,
            4375244527171869608L,
            5749214457757073666L,
            4541994463651552366L,
            4448135749491527723L,
            3252319268873763159L,
            -4937698705299440219L,
            -1443238972529269463L,
            5690643651433470600L,
            -9020999177617872107L,
            5216703363076035920L,
            8692072066293807690L,
            -2202944082561610978L,
            -3202058202844418274L,
            9199667660131659024L,
            -7208718625219556439L,
            -8188854117697466457L,
            6229032659379082713L,
            6056662700481738610L,
            -2741651824312128388L,
            -5770752964459016300L,
            -6200251094809993544L,
            -8462183157391465625L,
            1991684432526984227L,
            7539287820084627776L,
            2339478854158321950L,
            6202507390678485586L,
            7743951748128383694L,
            4168070312184911657L,
            8672082835392561991L,
            6896073963991207358L,
            1101380276289164762L,
            6605809935833891247L,
            -438522298677572710L,
            3905054981608874906L,
            -1747754391336276367L,
            1032773222913269798L,
            6843327699919057660L,
            -8003124643992369023L,
            -631503341286938581L,
            4129740207606678749L,
            -1702072036006461106L,
            7744011005333910111L,
            -6885964098355695662L,
            6294542643192709825L,
            -7426983010848522334L,
            -2954466992510897276L,
            -7979800600032271131L,
            -8655210458445057123L,
            -7169091905545403953L,
    };

    private static final long[] HASHES_OF_LOOPING_BYTES_WITH_SEEDS_0_0 = new long[]{
            6665653827947065942L,
            -5789604048565922719L,
            -3544073118936500090L,
            -2677072096376561857L,
            8974148226120660824L,
            -4749991284220333463L,
            8297039314422555359L,
            -8088911438875509914L,
            3424528861645039236L,
            -421993933668452455L,
            -3091699041169951528L,
            1163501013095869222L,
            -1554311774836581326L,
            4121966646419608524L,
            -5821497637003820218L,
            -4128235463417739287L,
            1634251901919194052L,
            -9040019856632616077L,
            1183275435239077349L,
            -6101391766615068007L,
            -3755326226698648655L,
            1818343754347462935L,
            -6462354084044314322L,
            -814980520133498484L,
            1615579219767298748L,
            -6066678408453320652L,
            -5834994416669600405L,
            6932484884661269235L,
            -7738687275954138493L,
            -445315170800868989L,
            6203156606326072466L,
            -8944279252978819749L,
            5060297072545920013L,
            -3956343463993130235L,
            -9180490411183400199L,
            -4817718227656051657L,
            785979865396935574L,
            -7689259778972129265L,
            6878639307143602827L,
            -1707085302887161029L,
            -1565439692045367513L,
            145188358359952638L,
            5950830465561353178L,
            -5798478302038700751L,
            -2226708668641330939L,
            6469448358736909862L,
            8664958527704152036L,
            5535349946889143487L,
            -5492973006601933162L,
            1056630503881604364L,
            309692344193328064L,
            -1325766938638327983L,
            -7482929830970430416L,
            -4408424302596019484L,
            -480574950088335999L,
            -3307863187790378596L,
            3477765577142638670L,
            -2331230081208486379L,
            3911594671769223260L,
            -6780531386208631646L,
            -8510677449436680990L,
            -626520326023685130L,
            6361450738099140926L,
            2394752145895650387L,
            -1428144106153991705L,
            -8083151844911747669L,
            -7436004472807581894L,
            5782046067893733552L,
            -5292026140423046307L,
            5533934070794082284L,
            -7662366745440754477L,
            2985568173297445164L,
            6966476425189845713L,
            -7703121456776836315L,
            -1510987927978493047L,
            7303134625337334164L,
            -8202990867786288428L,
            1319339862757959960L,
            -3077790914603251977L,
            -8454808621776160478L,
            -2753146122957105748L,
            3373398064125255264L,
            8346019299144821571L,
            -8486870268569731271L,
            -2336559059056769901L,
            4511628550243589470L,
            6951149477250785149L,
            5417720661433288424L,
            8309421963807893058L,
            5112522658470376561L,
            8234176485072859240L,
            7799608401388908342L,
            4378449040504281742L,
            -7989739383215628611L,
            -4732084855234830012L,
            3167384580555501185L,
            -3643215394046503577L,
            -7349901699683782836L,
            -5349550264170666110L,
            756076486099874176L,
            4174502207370688508L,
            -1151758869353979658L,
            8848338984622513194L,
            6395913475161294746L,
            1469705818420514455L,
            -6295758011496721124L,
            5241715235088273374L,
            -6511478119514275748L,
            8758910874313508247L,
            -1699706016752355418L,
            -690362402544790978L,
            2941321643463612597L,
            -4293872409356543041L,
            -8869301228299428567L,
            1141068614246669386L,
            647542286173136771L,
            -5081241094287956867L,
            7611746854774550166L,
            8286824316663843591L,
            5293297384504364695L,
            -5982798360475369212L,
            -6572523711787919267L,
            4407085069020124145L,
            4613619958838436303L,
            7684164341448790302L,
            6756516403404278842L,
            2473985321567407573L,
            -1849052731267467607L,
            -560354543015577264L,
            -373043150459477314L,
            6995361206199059042L,
            -4868650397665721927L,
            -7208287292799671945L,
            -3899683041439439017L,
            1521234411290838670L,
            5267471567701155516L,
            6474031661344396260L,
            4283176820990066383L,
            -774826789342914073L,
            4335739136054102737L,
            200896861914240508L,
            -4316420436327989620L,
            -5088641514239825154L,
            5164519541776509316L,
            2219746828642761402L,
            3587472414755725088L,
            -3488503791590966004L,
            -1652046437211338111L,
            -5535426239533412177L,
            -3602265696983958223L,
            -4567427711302233998L,
            8184240716274055400L,
            -5266269477414042060L,
            -7324103519668272668L,
            229999798703974345L,
            7096405761766463580L,
            -6255709187415618861L,
            852735384705532175L,
            -8938214114308238198L,
            8963621340924508593L,
            9112541540378925595L,
            -4616697869335781648L,
            -1233934456967866939L,
            -4077001463173053748L,
            -6419528926392839608L,
            1929390749779564956L,
            -7253316895888692088L,
            3527041640449918221L,
            -7080491663870455048L,
            -7454823183023009856L,
            -6713602407554956640L,
            -5298856948360600322L,
            -1501770146154973327L,
            -3425534612569530048L,
            8395223338644809391L,
            -4742678068980964529L,
            1652567688904060596L,
            5564504478001751639L,
            -8517554112392241558L,
            3786868227755834874L,
            -5719304763773211634L,
            3763970332575479507L,
            2649812513621696558L,
            -4445024488002933964L,
            -8450466196049720316L,
            5754528146566703292L,
            4852625517416018587L,
            7311959397744128586L,
            -327622418271024417L,
            -5089985239000418204L,
            -4480294659534985688L,
            -1294989405694625777L,
            -615947055237665163L,
            -4568269373826433084L,
            -6647170598113447270L,
            -2205400148055461188L,
            -2960875377488314259L,
            -7802864814797980125L,
            -4662829720569086630L,
            2546408082472556554L,
            890804262993354031L,
            -8226401715675614014L,
            -8917275821815880727L,
            2477618749365003865L,
            8418269367864851601L,
            4662094108308307351L,
            -8118793192420184206L,
            6846264423372553523L,
            -7942173008166231500L,
            -4108512744107291799L,
            -7904090155421027898L,
            5523466200613751305L,
            -2953379233731225425L,
            -1197095549386947091L,
            6045846757134608180L,
            -3707869269183903522L,
            2779236905743216135L,
            -361676587843055307L,
            -2635261306415357726L,
            -6509798004878518435L,
            1863587909403013988L,
            -7520580316527163576L,
            -6379291317211929448L,
            -7620905891725098001L,
            -2465551527582106307L,
            7241964578148990184L,
            -6311322781101340202L,
            -3020667296869548603L,
            8216782627512460387L,
            -2692182243233829563L,
            1747175548503678565L,
            -8885656099747617845L,
            522291218856276218L,
            6283744457032450774L,
            916230451834982654L,
            -4089965662770677423L,
            -8903058414982940070L,
            -3738198241317312383L,
            1445085914657575113L,
            -2012273464670594509L,
            6404077030013937454L,
            1329465815301186919L,
            4635873553023090471L,
            -5377753772517225420L,
            1015019521353160404L,
            -1665992354319528315L,
            9012340776556375011L,
            5778123565462793861L,
            8530605005049046593L,
            -4591714514116980507L,
            -4494594919048493483L,
            1893166869054693141L,
            -9061649457570254120L,
            2914267276964910135L,
            -6284492017246979138L,
            -7055505827569739765L,
            -889475583938310148L,
            -8187613934134840238L,
            -3308687460189573629L,
            -897141441007718763L,
            -6710963242654816172L,
            -5341924825235386471L,
            4347432584948358099L,
            8927713241297101393L,
            2180557435070426802L,
            4579020122958742093L,
            -5534158339970490803L,
            2185492605512194012L,
            -327633447467916153L,
            9215998522891732804L,
            -7912803364675245541L,
            -1806233245666346644L,
            -9038630050176177334L,
            -2192019490984975973L,
            -6479398744604567096L,
            6995952040088368841L,
            -4309518653977861918L,
            6102791465247431297L,
            -5104457163765865537L,
            7861681047136438901L,
            -5076301891857452794L,
            1819637793566329678L,
            -5361659997421131017L,
            -2091157752616506018L,
            -3248867894565820843L,
            8380590357118949537L,
            -5390027978162823802L,
            4679766642994167265L,
            1808649257049920713L,
            1521853533084038975L,
            -3254885160393954675L,
            4676349884210895679L,
            7152105176348873586L,
            4019498085477893861L,
            -7688826658849547105L,
            7725487018181678237L,
            2843148296909797321L,
            -2111458518911373960L,
            -5930988189464757132L,
            2999836080082916584L,
            5258645044061481873L,
            -4374901417507719180L,
            5968988542990945295L,
            7063865688418250092L,
            -3082390282994194982L,
            -1769924709834072774L,
            5156154634139202143L,
            -5042052718766755463L,
            -3999291805788718223L,
            -1650492645962554370L,
            -2788399451859036047L,
            7757384865629391019L,
            6764067541394908728L,
            -2964620754340212099L,
            -8835812450211244550L,
            -4330613157254549476L,
            5382312720775017309L,
            -8912238112613037874L,
            6729362625991860149L,
            5040339868437664129L,
            1986442221150817249L,
            2833965222715421174L,
            4454879067173589066L,
            4214179707119429897L,
            7969471537580882301L,
            4707712647580178131L,
            -6276384029844312381L,
            5003823498704182200L,
            -7159224012504849677L,
            -6732468713847601045L,
            -451150815967949945L,
            -3304945333512306051L,
            8721127390513069488L,
            -6257492216267905806L,
            6994701391892471561L,
            7369521965253705159L,
            -1942957112123842402L,
            -1274643128018116059L,
            -1580125162564136735L,
            9136185408214755747L,
            -2914537383120971740L,
            9209644639937450115L,
            487124280788007393L,
            -8177344317197823195L,
            2738707339044517752L,
            8095872149006863063L,
            -545157444532302601L,
            -936698329718580485L,
            -4901388582496778106L,
            -1399963386439197980L,
            1690941657066922406L,
            -6188898220632922030L,
            182177611176833150L,
            -5235331291371493590L,
            -7215173511743087678L,
            -2940930949094457090L,
            -3554616762777959507L,
            -1227566774803650594L,
            126409523184734199L,
            -5552904319120555059L,
            7352012128947000025L,
            175845163851021692L,
            7689535477863431441L,
            1688817097916176071L,
            -8309357218398085711L,
            1143303078449829434L,
            4988650444510350305L,
            989390459273330745L,
            -4404786474907964461L,
            -6013357091088560707L,
            -3369486357840647176L,
            -5617919047910994332L,
            7862597641680704753L,
            6153533607628655113L,
            -5935817060689825006L,
            -4638742470542759160L,
            -5170200139486489942L,
            -3797462862816231632L,
            -7523250579546769374L,
            3432885051112683135L,
            -594962147648253627L,
            -1635875643285631379L,
            6231350693553808879L,
            7408417052020966543L,
            2762871106861808563L,
            -5173631699220114637L,
            5713727412733125037L,
            -3899822138441414888L,
            2531424564706126868L,
            2668705972796311220L,
            -8505630464979201291L,
            5232417711683756420L,
            -6193480636951185723L,
            3997557899298166160L,
            -499329436764373579L,
            -4168998692140880977L,
            -1278702168248437939L,
            -4205714015212589720L,
            -6075452672774566057L,
            5316851879595668811L,
            -856263686801815946L,
            249453684176791550L,
            8631795819413273172L,
            -6359854298613460820L,
            -4880284840543237455L,
            -8505753341883846372L,
            2210511848333928251L,
            7866118606324100230L,
            -6686723182606252640L,
            -8022317142606681640L,
            2872846752948911332L,
            1462486761827744910L,
            -2333698582625662536L,
            2351971687147951698L,
            8780992513024852527L,
            -1055703511181057423L,
            -5129838204285009330L,
            6019857852521847817L,
            3474804733922603440L,
            -3438026173701472540L,
            -5014200821131413864L,
            3722183079515657580L,
            4595459098697613986L,
            -7273302362390554577L,
            -1183243147173106410L,
            1250316480703787335L,
            -4036417308378739551L,
            -8171241684564025199L,
            -1444817278101452987L,
            -5149004456737721464L,
            -9151361129918396129L,
            -3397841654363889387L,
            5939018758065831959L,
            -4618833968900085099L,
            -4804710050485360752L,
            -986147323305919153L,
            8433402046252694868L,
            3402472387886333079L,
            6648721581812913642L,
            7545001534469525767L,
            -2159558352983318523L,
            -527918061511557161L,
            -9097842819427090448L,
            5490764520636435462L,
            8940907420974044282L,
            8065885367294761717L,
            9126781255864608166L,
            -7038128550034808274L,
            2129349033611316048L,
            6122145305083854433L,
            -3131698705914526997L,
            8513873847555997838L,
            2641185331298884484L,
            -3933359261337583276L,
            4455822931565268868L,
            6210597485361343375L,
            48275763469138112L,
            -4040150889516064080L,
            -380969185514364438L,
            4241813299302917418L,
            -1595624218715483276L,
            -4776935416378672245L,
            -4376925234762941627L,
            4047867035099872744L,
            -1360084872964546187L,
            622387020347388700L,
            -5131645918980513847L,
            408338571741801931L,
            7363750087346687688L,
            6737473532720012277L,
            2318019708548967324L,
            8771768074500179526L,
            8857646919759472215L,
            2522573097657493641L,
            -2423326328890116522L,
            1989746966925038863L,
            7672722008502212941L,
            2140362728746429911L,
            -2673802457555972488L,
            -1773151482900640326L,
            -313068483478418644L,
            5013158890396496539L,
            5482660465451132885L,
            3258472208968020185L,
            4767670779359132511L,
            7693552999338372999L,
            -901680228690526025L,
            1089180371118481814L,
            4293375244035886346L,
            -1962629080279766201L,
            2222330065043425897L,
            3369405500095244802L,
            2658789151545528727L,
            -7774565807858620379L,
            1084326140869671947L,
            -5434432268705031901L,
            2180520833581215938L,
            632866827282395242L,
            7401769093998420929L,
            -1501945418691678209L,
            -6519039992723163516L,
            -3237878798648121431L,
            1445316291631581042L,
            9067784747908349955L,
            6720511821996419101L,
            -4604090926074340083L,
            -1703427890781067435L,
            -2332449337351599134L,
            -7134581291331345557L,
            -100619425730545485L,
            -8928331454614465558L,
            -5414664566994091947L,
            -250253323907790747L,
            -4125120859704104205L,
            5265608675113327534L,
            -1106440358316798986L,
            -3132948339320524042L,
            -1769360217727663390L,
            -6148228432119684450L,
            5051735026708131735L,
            -3084188413564311460L,
            8759728664177720433L,
            -4859095946336685737L,
            -1886889459731067640L,
            -1378480539638315159L,
            -9049809243416485286L,
            -2000107983033711361L,
            4157120773731364487L,
            -1808265212831445402L,
            -2196498993493480264L,
            -8386935930399696667L,
            4759938096703369345L,
            -4118521846188308313L,
            7157295486858813240L,
            4945752308016651452L,
            -4173785935384824363L,
            1788529025053697021L,
            3993842499528395149L,
            9171317917249731442L,
            -634141534904935122L,
            -2072087936990361526L,
            -7526214993566150005L,
            6612748581543768045L,
            -3336262380081111460L,
            4976550170355560820L,
            8588219279211966004L,
            -4599952352051238782L,
            -3077807470649213797L,
            3519048410419239281L,
            -1269625857054326672L,
            -1981810369066884456L,
            3215154362269493852L,
            -1785458974914263946L,
            -7685571788755122241L,
            -842157214814107044L,
            -5897864338134155533L,
            -6208498518724029718L,
            1499049555982089916L,
            -7395915256615735849L,
            2984391195155257274L,
            5877953066484841227L,
            6846689224681680487L,
            3262845941307632598L,
            5343873341106550578L,
            8674160231567510634L,
            -8964078304780361510L,
            8508234887302759010L,
            177823134353084724L,
            -6206673588147938556L,
            -5743358946993952513L,
            -4303394514558459612L,
            3274927803723806123L,
            -4798523778581238548L,
            -570481748089052408L,
            -3841292296997736004L,
            6731855287357772628L,
            -7228244941482034575L,
            -2491894868983308234L,
            151002941274804308L,
            6365761415219096791L,
            6910374953287400988L,
            -8244739115056188084L,
            7312238168197737958L,
            7043896837953553432L,
            -105689371098164936L,
            -3281826222318725416L,
            -5392584437397907545L,
            -1244502770939334171L,
            1422952733642352893L,
            -781084903411999364L,
            1396690387514113203L,
            -8234418537024402963L,
            933069852671849324L,
            3458378457074859210L,
            -432385914044143895L,
            -333866867497008084L,
            -5703273811341863097L,
            -2034540751574753942L,
            -2369557092226975438L,
            -815026134899265013L,
            -7959365582485730906L,
            -7197967434421910831L,
            4747509881653331798L,
            653308083545458473L,
            5930493565363152735L,
            4681031764662240390L,
            6800487255255275529L,
            2997868047200386085L,
            -4012551584799863895L,
            -2732276893078481698L,
            -6020710793223976880L,
            -4359477391069411647L,
            -9021880775816161346L,
            6353329025823001408L,
            2805319525008521714L,
            5679548538811076916L,
            -6219297722635931220L,
            -8841573986244661336L,
            8963781793551427953L,
            2688506298906176650L,
            6141741081705776696L,
            2510363714831351328L,
            -2730397005289452736L,
            7708495123904590946L,
            -632248182436338500L,
            -5234821280863028627L,
            1321223421208197172L,
            5864841446223183074L,
            -5988460782579658037L,
            -8225052281044207214L,
            -897540494473733225L,
            8590474636782421992L,
            7220132770424705042L,
            -9106622746426894075L,
            -3585709112504182555L,
            7808697748897822522L,
            -4089854074839215479L,
            6016223108476798945L,
            -6597172736630482691L,
            -2193801513557418184L,
            5825159972581893620L,
            4631846790359335398L,
            -5532611793901955549L,
            -5243152382106090709L,
            -127459936222352081L,
            6091495647920317970L,
            6462841941099889780L,
            -4575635345767708116L,
            -2542164493227712148L,
            -305478661809303004L,
            -4059150405046622549L,
            -5381054086283578893L,
            7191490357105815377L,
            3276929466127581069L,
            2009085051555744551L,
            3249445681007134225L,
            -8121229117439800671L,
            3440037568412847743L,
            3280179938427916363L,
            1442329761432187844L,
            -1693017785953323849L,
            -3408752277115922281L,
            -3038837448636151594L,
            -3070429694929466029L,
            -7559544014133244350L,
            2583256147707906484L,
            8809049921046234748L,
            8707285529402118928L,
            680585173321551184L,
            2835422586302063689L,
            -2367902852764733088L,
            4311754893046855300L,
            -7420248434161482753L,
            -115331812692054874L,
            932066338714068818L,
            -8023806876384453665L,
            3566420863959396435L,
            4981613369266357307L,
            -3434457476282205941L,
            4903586440989717216L,
            3268581766723018296L,
            -6679520660856856176L,
            -5331329368963679157L,
            -2266666248595158753L,
            -8523119193122881242L,
            -55424956038138295L,
            -9070536805481137606L,
            5417874584175861223L,
            -9170990702439119877L,
            -2874187966968250082L,
            -2946382889610762149L,
            4460563949925001083L,
            208629763415621209L,
            -2006752850050214804L,
            4078329933745202367L,
            -6003178253606500673L,
            -1901357459835262850L,
            -8628316773608528907L,
            -2367045297086306897L,
            5181249700081074386L,
            -4589928625788551233L,
            -2552920600683065276L,
            3839074001010260393L,
            6062571583983586246L,
            3105281105213899486L,
            -8099385440700840978L,
            4787643747225137633L,
            -8984875174291612426L,
            4913083880029400303L,
            6268216711282604489L,
            -9161084900657602886L,
            4091506170626504784L,
            -6137301573374744154L,
            862946098808666372L,
            -6257228414093693534L,
            846885534512613336L,
            -8079328287598987503L,
            -6720900737415180224L,
            1285878208148563529L,
            7631267414265336249L,
            -2101551039318119517L,
            5109001452480742834L,
            3045563723015329655L,
            -2678263607699919634L,
            -6111470810863893821L,
            -62607678110828373L,
            2055784805590000566L,
            1529635868940897778L,
            7944938393711537630L,
            -8622354108627238341L,
            400616186093007467L,
            -3365668985765229920L,
            520796926667976058L,
            102953245028782442L,
            -2887814565519713483L,
            1134845382723719106L,
            9165308674806362050L,
            -6744097273442400118L,
            6792112760482467418L,
            -2608343247634721333L,
            -4300634750668796357L,
            9114849223412999163L,
            3292520868553201409L,
            8990457701612625656L,
            -8604807838878366041L,
            6771571915702855913L,
            -2596622766084861700L,
            -1646084290072088508L,
            1986205531231129502L,
            -7397245895787143030L,
            1322416902629630467L,
            8798541050009010963L,
            -2603841395104921386L,
            -543569387127414242L,
            984277979951833313L,
            -3660009424046808871L,
            -8594713258206394011L,
            8481462325069318424L,
            -7693778854396921111L,
            -3466292502757840479L,
            -2782730956760988243L,
            2144829447800020843L,
            1822306312783027271L,
            -6176295933444085182L,
            622474367537194108L,
            -4672048499304291212L,
            -4264273507669187343L,
            6547219371359541315L,
            307228520032121068L,
            -6000079446917495846L,
            1421275154031788543L,
            -5016167630802770982L,
            -8153331626666077741L,
            4942105349496831629L,
            3433248069013654310L,
            -2222196715022867294L,
            1813002790841082845L,
            -3166716117255484472L,
            -9054518662678110779L,
            -7366837763863382746L,
            1821322667002800477L,
            -6699279961062916425L,
            5275413951856993906L,
            -1764403036698451877L,
            -6814217963826368587L,
            7436121024271456880L,
            8020503156016080684L,
            4790388985973217959L,
            1217850670627339453L,
            9024348854253136643L,
            1103129819330605922L,
            -2166392621148129624L,
            1180647242684910729L,
            -1356076635533405843L,
            -6621817644273909238L,
            8889272575079464367L,
            4253064062765640293L,
            -8444342477389972075L,
            -4449332965293453838L,
            -4037054741244914652L,
            -5783630812876862786L,
            -6227123841055454074L,
            2689340898385899414L,
            -5298687834900317834L,
            -5771269026024081892L,
            1945144907664070561L,
            -2548379487047027869L,
            -4846198189662238716L,
            6383035859800179563L,
            -538840917214433039L,
            8270516200955665520L,
            -8600518090590687029L,
            3805661707968319824L,
            7599817584154307234L,
            -3646938568457564007L,
            43016748520311967L,
            3409116355300614893L,
            621933859667984230L,
            4420539797901766919L,
            -8854667100425996404L,
            7203838388356217445L,
            -7264835226236053678L,
            -1623402918890722788L,
            -4166106671946901643L,
            8889077380182099507L,
            8937812779969367487L,
            4083244217264466556L,
            7823919447681612722L,
            -385459494499317144L,
            -5883272230680561812L,
            6356338096717516045L,
            9162899879168759439L,
            566477718171182844L,
            5138116499374346600L,
            -8162099721989626792L,
            2871419627484181402L,
            4549390537257157879L,
            -2450300817394156370L,
            7914639949613314474L,
            860572809253792281L,
            2292560778148293412L,
            -7502514745528454484L,
            -6882165832291626199L,
            -2630674516935294102L,
            -4989794580249597060L,
            -7513651950755561937L,
            4804536116066169381L,
            -5242688622696191670L,
            8047321759875327873L,
            -3677209646627471284L,
            6980331724177633705L,
            -375074456792592810L,
            -6802449435897247678L,
            -1628562059596464092L,
            8113462089103701362L,
            -3970435268208640319L,
            -9097918839183737600L,
            6199140712580348865L,
            -268991411330185044L,
            -7817073335811580945L,
            -3405223752470266629L,
            7993791576935207402L,
            5192774131052489482L,
            -9042927321514383766L,
            -3601662122081534094L,
            4841841972164327977L,
            -1645688674582329230L,
            7159999496075283486L,
            -7405132443615822400L,
            -3717231289253565466L,
            2918520769168028237L,
            -1260804183044051163L,
            8154917047376864752L,
            5508346499230105531L,
            3285997221882934909L,
            -5617134513664899328L,
            8293867188447369346L,
            -3882977634293431140L,
            1239307736392879380L,
            -8924851511568278673L,
            -1622087619217032532L,
            -5551432630671196153L,
            -1121763370203524511L,
            551938970558940490L,
            448453096366444138L,
            5667305190458742300L,
            4539597042043946745L,
            5829786741944860299L,
            3393352605677422507L,
            335053384967789388L,
            4394222496211014534L,
            5370000130739018087L,
            -565706613123683753L,
            -7833497599449750817L,
            -3437882830797020390L,
            4937862675193204437L,
            5959554141150583384L,
            3983730657745060070L,
            -2467280586303360795L,
            -335334767324786992L,
            -640382658335040542L,
            -6577797313708187062L,
            1125349079636120123L,
            -494879484631175552L,
            -5623945463935727777L,
            -3970027725779406711L,
            -8493400026672732241L,
            -311293892634841311L,
            6355980595541216637L,
            -5751497682715332938L,
            2347741401598364925L,
            -4809577486191269354L,
            1420282983140681264L,
            3613315133783948228L,
            8625254293652687419L,
            7531382631561216614L,
            5399763597085607760L,
            3035446121449853380L,
            -2120112973020043286L,
            480192923742041432L,
            -2548797010939265844L,
            -3405974478077804102L,
            -133708079963712608L,
            -337250121171329984L,
            4042336883248424281L,
            -5364750416296539339L,
            -6498306095021896398L,
            -7473497501035559608L,
            1723304923372711161L,
            5006605643417679342L,
            -909630909226495535L,
            4651967258997819637L,
            -2492450197158626287L,
            8848922133698826227L,
            6782108621218678042L,
            4567479157936435262L,
            -820689158472515069L,
            4826415566140008821L,
            -2484634481640370398L,
            1380433635719727570L,
            8147033694125853433L,
            -3881420496323039737L,
            -5072661488520121646L,
            -1001254897970286729L,
            6441576346453560757L,
            -7535835287918290060L,
            7430502536985186200L,
            5108187444240043248L,
            1549419730978779681L,
            7111883894871337879L,
            6796158162775215639L,
            2516639939991012468L,
            -2371674177998310802L,
            1127854323859071735L,
            -8295387485661924306L,
            1253693892107448444L,
            -354249102833783868L,
            1065848432473299948L,
            4980932879340301589L,
            -3265506302710279538L,
            1321586933496286980L,
            -4844842473063803960L,
            -4204298827240721647L,
            -3118913691980453704L,
            7305336767320557495L,
            -6798785057541149778L,
            8746540548113783399L,
            -7969167725986709018L,
            8609211018983958021L,
            -7231030245443353922L,
            5692294488862404752L,
            -5761197062576580840L,
            -5894104633667262135L,
            -1372322724071052152L,
            -1152616426443151651L,
            935972424443347664L,
            8940890555228973330L,
            -619270121883985361L,
            8372920364579516256L,
            4398889684895596727L,
            -4160078105340506886L,
            17822379882525818L,
            -1430879876106006468L,
            3128763795393100346L,
            607666137432825035L,
            -766289326504346177L,
            -4462174050261663777L,
            -1140803182508002260L,
            1035794337970190842L,
            299393203454704382L,
            7734246045329515707L,
            6361639674133231345L,
            -4159331747805036027L,
            -4615813274428812655L,
            3873955101764325164L,
            -6849074412332003603L,
            -8511457087328374957L,
            1188632971701951322L,
            -4073667337443196875L,
            4905058734702399313L,
            -4717225456603964250L,
            5342494502015340877L,
            -1341838399813369350L,
            -1184900213109944408L,
            7269941727655174395L,
            -8379459598706879314L,
            3162473609960755880L,
            -3008200309695401191L,
            2351068467933459341L,
            -71569529145854359L,
            3900859699454157168L,
            7000831594956186274L,
            4124542402944063388L,
            517836136499145469L,
            -3563369622913903581L,
            -6131810259721881352L,
            2478930569265994206L,
            -7335894002456063877L,
            -1852552332759896185L,
            -7661455803549448534L,
            4220258643753458017L,
            -2576514654123627237L,
            -4329614475513280706L,
            -6312701748516438716L,
            -8712455751362790038L,
    };
}
